package Main;

import Beans.Student;
import User.*;
import Utils.*;
import dao.DataOperation;
import operation.AppendStudentInfo;
import java.util.List;
import java.util.Scanner;


/**
 * 程序主页面
 */
public class Main {

    /**
     * 开启入口
     */
    public static void main(String[] args) {
        Main main = new Main();
        main.start();
    }

    public void start() {
        int option;
        do {
            MenuView.mainMenu(); //显示主菜单
            option = MenuInputUtil.readMenuSelection(1, 3); //菜单选择
            switch (option) {
                case 1:
                    register();
                    break;
                case 2:
                    login();
                    break;
                case 3:
                    System.out.println("退出系统。");
                    break;
            }
        } while (3 != option);

    }

    /**
     * 学生账号注册功能，对键盘录入的数据进行合法性校验后添加到数据库中
     */
    private void register() {
        System.out.println("+---------- 学生账号注册 ----------+");
        //从键盘录入学生信息
        List<String> accountInfoList = new AppendStudentInfo().inputStudentInfo();
        if(accountInfoList == null){ //在输入信息时退出
            return;
        }

        //向学生账户表中添加一条记录
        //1.先查询数据库中是否已存在此账户
        Student student = DataOperation.queryOne(Student.class, SQLSentencePoll.SpecifiedAccount_Check,
                accountInfoList.get(0));
        if(student != null){
            System.out.println("已存在此账号，注册失败！");
            return;
        }
        //2.没有就新增账户
        DataOperation.update(SQLSentencePoll.AccountInfo_Insertion, accountInfoList.toArray());
        System.out.println("注册成功！");
    }

    /**
     * 账户登录功能：
     * 根据账号长度检测登录角色，查询库中是否存在此账户，存在则创建角色对象，不存在则给出提示。
     */
    private void login() {
        Scanner in = new Scanner(System.in);
        System.out.println("+--------- 账户登录 ---------+");
        System.out.print("账号(学号或教工号)：");
        String accountId = in.next();
        System.out.print("密码：");
        String password = in.next();

        //角色检查
        User user;//角色对象
        if(accountId.length() < 13){
            //教师用户
            user = DataOperation.queryOne(TeacherUser.class,SQLSentencePoll.Teacher_Login_Check,
                    accountId,password);
        }else{
            //学生用户
            user = DataOperation.queryOne(StudentUser.class,SQLSentencePoll.Student_Login_Check,
                    accountId,password);
        }
        if(user != null){ //登录成功
            System.out.println(user.getName() + ",欢迎登陆！");
            boolean isContinue;
            do{
                //角色功能界面显示
                int option = user.menu();
                isContinue = user.operate(option); //是否继续执行操作

            }while (isContinue);
        }else{
            System.out.println("账号或密码错误");
        }
    }
}
